如何对JMeterWebSocket插件进行压测 |
您所在的位置:网站首页 › esp32micropython websocket › 如何对JMeterWebSocket插件进行压测 |
通过Apache JMeter和对应的插件编写脚本,并在PTS中上传这些脚本、插件JAR包和其他相关文件,即可发起压测。 本文以JMeter WebSocket Samplers插件为例,主要介绍如何在本地使用Apache JMeter编写、调试压测脚本,以实现WebSocket协议的业务场景压测。 背景信息WebSocket的插件较多,本文仅以JMeter WebSocket Samplers为例。JMeter WebSocket Samplers具有以下特性: 提供了六种WebSocket Sampler,这些Sampler不会新建额外的线程,节省资源。 支持WSS (WebSocket over TLS)。 JMeter的SSLManager能设置WSS,包括客户端证书。 支持二进制的WebSocket数据帧。 支持二进制响应的断言。 View Results Tree里可以查看二进制结果。 支持使用JMeter的Header Manager设置WebScoket Upgrade Request上额外的HTTP Header。 支持使用JMeter的Cookie Manager设置升级协议的请求里的Cookie。 支持代理。 支持过滤数据帧。关于本文没有涉及的代理、过滤、分片等信息,请参见 JMeter WebSocket Samplers 插件介绍。 操作步骤如下: 步骤一:安装插件JMeter WebSocket Samplers 步骤二:创建脚本 步骤三:运行脚本 步骤四:导出脚本 步骤五:上传脚本、插件JAR包和其他文件至PTS进行压测 步骤一:安装插件JMeter WebSocket Samplers 下载JMeter WebSocket Samplers,建议下载最新版本。 将下载的插件.jar包存放在/lib/ext路径下。 重要 在PTS中发起压测时,此处下载的插件.jar包需要上传到PTS。请参见步骤五:上传脚本、插件JAR包和其他文件至PTS进行压测。 重启JMeter。重启JMeter之后,按照以下步骤查看插件是否安装成功: 右键单击左侧导航树中的Test Plan,选择Add > Config Element,可看到新增的配件元件选项WebSocket Binary Frame Filter、WebSocket Ping/Pong Frame Filter和WebSocket Text Frame Filter。 ![]() 右键单击左侧导航树中的Test Plan,选择 Add > Assertions,可看到新增的断言选项 Binary Response Assertion。 ![]() 右键单击左侧导航树中的Test Plan,选择Add > listener > View Results Tree,在编辑页面左下方的下拉列表中,可看到新增的选项Binary。 ![]() 右键单击左侧导航树中的Test Plan,选择Add > Threads(Users) > Thread Group,右键单击Thread Group,选择Add > Sampler,可看到以下新增的采样器选项,具体说明如下。 Sampler名称 说明 WebSocket Open Connection 建立一个WebSocket连接 WebSocket Ping/Pong 控制帧,发送Ping并接收Pong WebSocket request-response Sampler 发送和接收文本或二进制WebSocket帧 WebSocket Single Write Sampler 发送文本或二进制WebSocket帧 WebSocket Single Read Sampler 接收文本或二进制WebSocket帧 WebSocket Close 关闭Websocket连接下一步,需要配置这些Sampler。 步骤二:创建脚本这里将演示如何在测试场景中添加并配置Sampler。以下为简单示例,您可以根据业务需要进行调整。 在JMeter页面中,右键单击Test Plan,选Add > Thread (Users) > Thread Group,将一个线程组添加到测试计划中。 在线程组中依次添加采样器(Sampler),并进行配置。右键单击Thread Group,选择Add > Sampler > WebSocket Open Connection。当前的Sampler将建立WebSocket连接。![]() 相关的配置如下: 配置项 示例值 说明 协议 WS 协议可以是WS或WSS(Secure WebSocket)。使用WSS进行加密连接。 Server name or IP echo.websocket.org 域名或IP Port 443 端口 Path - 可为空 Connection timeout(ms) 20000 建连的超时时间 Read timeout(ms) 6000 等待服务器响应的超时时间 右键单击Thread Group,选择Add > Sampler > WebSocket Ping/Pong。该Sampler用来测试Ping/Pong功能。![]() 相关配置如下: Pong(读)超时(ms):6000 Pong(读)超时表示如果JMeter在6秒内没有收到Pong消息,则Sampler将失效。此Sampler会复用已有连接。 右键单击Thread Group,选择Add > Sampler > WebSocket request-response Sampler。![]() 相关配置如下: 配置项 示例值 说明 Connection use existing connection 创建新的连接或复用已有连接。 数据类型 文本 指定数据类型、请求数据和响应超时值。 Request data PTS 请求数据,这里以文本为例 Response (read) timeout (ms) 6000 响应超时时间 右键单击Thread Group,选择Add > Sampler > WebSocket Single Write Sampler。此请求是非阻塞的,只是将数据发送到服务端不需要等待响应。![]() 相关配置如下: 配置项 示例值 说明 Connection use existing connection 创建新的连接或复用已有连接 数据类型 文本 指定数据类型、请求数据和响应超时值 Request data PTS 请求数据,这里以文本为例 Response (read) timeout (ms) 6000 响应超时时间 右键单击 Thread Group,选择Add > Sampler > WebSocket Single Read Sampler。接收服务端的消息响应需要使用这个Sampler。![]() 相关配置如下: 配置项 示例值 说明 Connection use existing connection 创建新的连接或复用已有连接 数据类型 文本 指定数据类型、请求数据和响应超时值 Response (read) timeout (ms) 6000 响应超时时间 右键单击Thread Group,选择Add > Sampler > WebSocket Close。接收服务端的消息响应需要使用这个Sampler。![]() 相关配置如下: 配置项 示例值 说明 Close Status 二进制 关闭连接时定义的状态码,数据帧的头两个字节 Response (read) timeout (ms) 6000 响应超时时间此采样器将关闭现有的WebSocket连接,由于是协商关闭,显示原因为“1000:sampler requested close”。 如果您需要在通信中添加Token等Header,右键单击Thread Group,选择Add > Config Element > Http Header Manager,在线程组中添加配置元件Http Header Manager,并添加对应的Header。具体详情,请参见JMeter官方文档。 右键单击Thread Group,选择Add > Listener > View Results Tree,在线程组中添加监听器View Results Tree。接收服务端的消息响应需要使用这个Sampler。 步骤三:运行脚本脚本编辑完成后,单击页面顶部的开始按钮,运行脚本。 通过View Results Tree监听器查看脚本是否运行正常。在左侧导航树中,选择View Results Tree,检查所有Sampler是否都配置正确并符合预期。在该监听器中,如果Sampler前面有绿色对勾表示运行正常。 如出现运行异常的Sampler,请参见步骤二:创建脚本进行调试。 部分示例结果如下: WebSocket request-response Sampler根据脚本配置,Request信息如下: ![]() 根据脚本配置,Binary格式的Response data如下: ![]() 根据脚本配置,Text格式的Response data如下: ![]() 根据脚本配置,Binary格式的Response data如下: ![]() 当本地脚本调试成功后,选择顶部菜单栏的File > Save Test Plan as,将脚本文件保存至本地。 步骤五:上传脚本、插件JAR包和其他文件至PTS进行压测您需准备以下文件,上传到PTS: 导出的JMeter脚本(.jmx文件) JMeter WebSocket Samplers的JAR包 脚本中使用的其他数据文件关于在PTS中压测的操作步骤,请参见创建JMeter场景。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |